Many types of software applications allow users to perform tasks such as taking actions, viewing content related to a particular activity, and/or utilizing functionality of the software applications. A software application generally provides a user interface such as a graphical user interface to facilitate users' ability to perform such tasks. A user interface often includes one or more menus of objects (for example, graphics, images, text, audio clips, video clips, and the like) that are navigable and selectable by users to perform various tasks.
A user interface framework specifies the way that user interface navigation is handled for a particular software application. Some common user interface frameworks supply unique strings/methods corresponding to each known item of functionality or content accessible via the user interface, and wrap such strings/methods into components. Then, a fixed, flat global function list is used to refer to the entire set of available components. A programmer may call into any component from any other component to specify handling for user interface navigation. Generally, such global function lists are hardcoded at programming time, result in tight couplings between components, and do not support runtime indirection.